package program;

import java.util.Scanner;
/**
 * Driver Program para el sistema de parqueos con la implementacion
 * de una stack
 */

/**
 *
 * @author David Coronado
 */
public class DriverProgram {

    public static void main(String[] args) {

        MyStack parqueo = new MyStack();
        Scanner scan = new Scanner(System.in);
        String input;
        boolean correct = true;
        char op;

        System.out.println("*---------------------------------------*");
        System.out.println("|                                       |");
        System.out.println("|     ~~~SISTEMA DE PARQUEO \"DC\"~~~     |");
        System.out.println("|                                       |");
        System.out.println("*---------------------------------------*");

        /**
         * Despliegue del menu del programa
         */
        do {

            do {
                System.out.println("\na. Ingresar un vehiculo al parqueo");
                System.out.println("d. Sacar un carro del parqueo");
                System.out.println("0. Salir del Programa");
                System.out.println("1. Ver el estado del parqueo");

                input = scan.next();
                input = input.toLowerCase();
                if (input.length() != 1) {
                    System.out.println("Error!... Opcion invalida");
                    correct = false;
                }
            } while (correct == false);

            op = input.charAt(0);

            switch (op) {
                case 'a':
                     {
                        /**
                         * Se requiere la placa del vehiculo para estacionarlo
                         */
                        System.out.println("Ingrese el # de placa del vehiculo");
                        String placa1 = scan.next();
                        Automovil car = new Automovil(placa1);
                        try {
                            parqueo.push(car);
                            System.out.println("\nSu carro ha sido parqueado satisfactoriamente en la casilla " + parqueo.Spot());
                        } catch (Exception e) {
                            System.out.println(e);
                        }
                    }
                    break;
                case 'd':
                     {
                         /**
                          * Se ingresa la placa del vehiculo y el estacionamiento en el que se encuentra
                          */
                        System.out.println("\nIngrese el numero de placa del vehiculo a retirar");
                        String placa2 = scan.next();
                        placa2.toUpperCase();
                        System.out.println("Ingrese la posicion en la que se encuentra el vehiculo");
                        int pos = scan.nextInt();

                        try {
                            /**
                             * Se chequea que el automovil con placa x (la placa ingresada)
                             * este en el parqueo indicado
                             */
                            if (parqueo.peek(pos).getPlaca().equals(placa2)) {
                                String retirado = parqueo.pop(pos).toString();
                                System.out.println("\nEl automovil \'" + retirado + "\' ha sido retirado del parqueo");
                                System.out.println("Aviso!... Los automoviles se han reorganizado...");
                            } else {
                                System.out.println("\nEl automovil no se encuentra en el espacio indicado");
                                System.out.println("Se le ha de cobrar una multa al duenio por movilizacion innecesaria");
                            }
                        } catch (Exception e) {
                            System.out.println(e);
                        }
                    }
                    break;
                case '1':
                    /**
                     * Se muestra el estado del parqueo
                     */
                     {
                      System.out.println(parqueo.toString());   
                    }break;
            }

        } while (op != '0');
        
        System.out.println("\nFin del Programa...");


    }
}
